# 函数定义时，给形参默认值，只有与默认值不符的时候才需要传递实参

# 在函数体中，给形参b一个默认10的参数
def fun(a, b=10):
    print(a, b)


# 调用函数
# 当前调用函数默认传参数 a = 100，没有传 b 则 b 默认为10
# 调用fun
fun(100)

# 调用函数传参a=100，b=20 20与 b 定义的形参不同，则使用shican
fun(100, 20)

print('-----------------个数可变的位置参数--------------------')
# 个数可变的位置参数
# 定义函数时，如果实现事先去无法确定传的递位置的实参个数，可以先用*定义一个可变的位置参数
# 一个函数中，只可定义一个


def fun1(*ags):
    print(ags)


# 结果为一个元组
fun1(10)
fun1(10, 20)
fun1(20, 10, 56.5)

print('-----------------可变的关键字形参--------------------')
# 个数可变的关键字形参
# 定义函数时，如果无法实现确定传递的关键字实参的个数时，可以使用**定义一个可变的关键字形参
# 一个函数中，只可定义一个


def fun2(**ags1):
    print(ags1)


# 结果为一个字典
fun2(x=1, y=2, z=4)

# 当两者同时存在时，要求个数可变的位置参数在前，可变关键字形参在后


def fun3(*aegs1, **aegs2):
    pass
